The present invention relates generally to virtualized computers and more specifically to managing network bandwidth in a virtualized computer.
System virtualization creates several virtual computers within a single physical computer. Each virtual computer is a logical division or sharing of physical resources, such as a percentage of real processor capacity, an amount of real memory, an amount of storage and a percentage of network I/O capacity. While a specific real processor can in some cases be allocated to a virtual computer, the virtual computer is not a self-contained computer containing the real processor, but is formed with other virtual computers from the same real computer. Virtualization of resources can also be implemented by combining multiple physical resources into shared pools from which virtual resources may be shared by multiple entities. In some computer platforms virtualization is implemented by logical partitions (LPARs) of physical resources.
FIG. 1 illustrates a known real computer 116. Real computer 116 includes multiple LPARs 103a-d. A Virtual I/O Client (VIOC) computer and a Virtual I/O Server (VIOS) computer can be formed in separate LPARs in the same or different real computers by installation of I/O client software and I/O server software in the respective LPARs. In the example illustrated in FIG. 1, VIOCs 104a-c are formed in respective LPARs 103a-c in real computer 116, and a VIOS 104d is formed in LPAR 103d in the same real computer 116. VIOCs 104a-c have virtual Ethernet adapters 106a-c for communicating with one another and with VIOS 104d. VIOS 104d provides virtualized network resources to VIOCs 104a-c via shared Ethernet adapter (SEA) 108. SEA 108 bridges physical Ethernet adapter 110 with virtual Ethernet adapters 106a-c. Physical Ethernet adapter 110 connects real computer 116 to external network 120 via physical switch 122. A hypervisor program 112 forms LPARs 103a-d from real resources of real computer 116, performs standard operating system functions, and manages the communication between LPARs 103a-d via virtual switch 114. LPARs 103a-d are each mapped to, or allocated, a portion of memory in real RAM (not shown). Hypervisor program 112 also manages the Remote Direct Data Access (RDMA) program 118 for copying packets from mapped memory at VIOCs 104a-c to mapped memory at VIOS 104d when VIOS 104d receives a request from any of VIOCs 104a-c to transmit packets to external network 120.
SEA 108 of VIOS 104d apportions network bandwidth in a previously known manner when VIOS 104d receives requests to transmit packets from any of VIOCs 104a-c. The network bandwidth is provided by internal hardware and software components (such as input buffers to SEA 108 and physical network adapter card 110) within computer 116 as well as external hardware and software components (such as routers, switches, etc.) in the network communication path used by and external to computer 116 as well as other network communication resources.
SEA 108 may give higher priority to certain types of packets than others depending on various factors such as a quality of service commitment to a sender or recipient of the data transfer. Occasionally, when network bandwidth is fully consumed, and SEA 108 cannot transmit a packet, SEA 108 will drop the packet. In such a case, the sending VIOC, e.g., VIOC 104c, will not receive an acknowledgement for the packet. Likewise, the sending VIOC will not receive an acknowledgement in those cases where the packet is dropped for reasons other than saturated network bandwidth (i.e. faulty packet.) The sending VIOC will not know the reason why SEA 108 dropped the packet, and will re-transmit the request to transmit the packet after a time-out. In the former case of network bandwidth overload, SEA 108 will likely not be able to re-transmit the packet and will likely again drop the packet, because typically network bandwidth overload takes longer to resolve than the time-out. (The time-out is typically set to outlast other causes of a dropped packet which are typically resolved in less time than a network bandwidth overload.) Consequently, the sending VIOC will continue to re-transmit requests to transmit the packet to VIOS 104d without being aware that network bandwidth remains unavailable, and this compounds the bandwidth utilization problem. SEA 108 is not capable of notifying the sending VIOC when network bandwidth becomes available.